﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic;
using System.IO;
using System.Data;

namespace Crosland.Automotriz.Web.SSIS
{

    public partial class wFrmCargaStockSap : BaseForm
    {
        //private static String RutaExcel = "";
        EjecutarJobsLogic jobExec = new EjecutarJobsLogic();

        protected override void Inicializar()
        {
            TablaExcel_Cargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            if (dt.Rows.Count == 0)
            {
                btnEjecutarPaquete.Enabled = false;
            }
            else
            {
                btnEjecutarPaquete.Enabled = true;
            }

            
        }

      
    
        protected void btnEjecutarPaquete_Click(object sender, EventArgs e)
        {
            string job = "Carga_Stock_SAP";
            string status=jobExec.StartSqlJob(job);
            lblStatus.Text = status;

            rpExcelCargados.Enabled = false;

            btnImportarExcel.Enabled = false;
            btnEjecutarPaquete.Enabled = false;
            Image1.Visible = true;
            lblStatus.Visible = true;
            Timer1.Enabled = true;
            
        }

        protected void Timer1_Tick(object sender, EventArgs e)
        {
            int id;
            string msg = string.Empty;

            id = jobExec.StatusJob("Carga_Stock_SAP");
            msg = jobExec.MsgStatusJob(id);

            lblStatus.Text = msg;
           
            if (id != 1) 
            {
                rpExcelCargados.Enabled = true;
                MostrarExcelCargados();
                btnImportarExcel.Enabled = true;
                btnEjecutarPaquete.Enabled = false;
                Image1.Visible = false;
                lblStatus.Text = msg;
                Timer1.Enabled = false;
            }

            
        }

        protected void Uploader1_FileUploaded(object sender, CuteWebUI.UploaderEventArgs args)
        {
            try
            {
                string anio = DateTime.Now.Year.ToString();
                string mes = DateTime.Now.Month.ToString();
                string dia = DateTime.Now.Day.ToString();
                string hora = DateTime.Now.Hour.ToString();
                string minuto = DateTime.Now.Minute.ToString();
                string segundo = DateTime.Now.Second.ToString();
                string fechaHora = anio + mes + dia + "_" + hora + minuto + segundo;

                string UploadDirectory = Server.MapPath("~/Archivos Excel SSIS/STOCK_");
                string Nombre = args.FileName;
                byte[] bytes = Tools.ReadToEnd(args.OpenStream());

                File.WriteAllBytes(UploadDirectory + args.FileName, bytes);

                pcCargarExcel.ShowOnPageLoad = false;
                string scriptOK = "MostrarMensaje();";
                lblMensaje.Text = "Excel cargado.";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }
            catch (Exception ex)
            {
                pcCargarExcel.ShowOnPageLoad = false;
                string scriptOK = "MostrarMensaje();";
                lblMensaje.Text = ex.Message;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
            }


        }

        protected void MostrarExcelCargados()
        {
            TablaExcel_Cargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            DataRow dr;

            if (dt.Rows.Count > 1)
            {
                for (int x = 0; x < dt.Rows.Count - 1; x++)
                {
                    dt.Rows.RemoveAt(x);
                }
            }

            DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/Archivos Excel SSIS"));

            FileInfo[] files = dir.GetFiles("*.xls", SearchOption.AllDirectories);
            foreach (var fileInfo in files)
            {
                dr = dt.NewRow();
                dr.BeginEdit();
                dr["ID"] = dt.Rows.Count + 1;
                dr["NombreArchivo"] = fileInfo.Name;
                dr.EndEdit();
                dt.Rows.Add(dr);
            }

            Session["ArchivosExcel"] = dt;

            dgvExcelCargados.DataSource = dt;
            dgvExcelCargados.DataBind();


       }

        protected void TablaExcel_Cargados()
        {
            DataTable dt = new DataTable();

            if (Session["TablaExcelCargados"] == null)
            {
                dt.PrimaryKey = new DataColumn[] { dt.Columns.Add("ID", typeof(string)) };
                dt.Columns.Add("NombreArchivo", System.Type.GetType("System.String"));
                
                Session["ArchivosExcel"] = dt;

            }
            else
            {
                dt = (DataTable)Session["ArchivosExcel"];

            }

        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Session["ArchivosExcel"] = null;
            Response.Redirect("http://automotriz.crosland.com.pe/Repuestos/wFrmDefault.aspx?id=3");


        }

        protected void ASPxButton2_Click(object sender, EventArgs e)
        {
            MostrarExcelCargados();
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];
            if (dt.Rows.Count == 0)
            {
                btnEjecutarPaquete.Enabled = false;
            }
            else
            {
                btnEjecutarPaquete.Enabled = true;
            }

        }

        protected void dgvExcelCargados_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["ArchivosExcel"];

            int id = Convert.ToInt32(e.Keys["ID"]);

            DataRow[] Fila = dt.Select("ID='" + id.ToString() + "'");

            string NombreArchivo = Fila[0]["NombreArchivo"].ToString();

            if (File.Exists(Server.MapPath("~/Archivos Excel SSIS/" + NombreArchivo)))
            {

                File.Delete(Server.MapPath("~/Archivos Excel SSIS/" + NombreArchivo));

            }

            DataRow row = (dt.Rows.Find(e.Keys["ID"]));
            dt.Rows.Remove(row);
            e.Cancel = true;

            ReenumerarItem(dt);

            Session["ArchivosExcel"] = dt;

            if (dt.Rows.Count == 0)
            {
                btnEjecutarPaquete.Enabled = false;
            }
            else
            {
                btnEjecutarPaquete.Enabled = true;
            }

            this.dgvExcelCargados.DataSource = dt;
            this.dgvExcelCargados.DataBind();

        }


        protected void ReenumerarItem(DataTable d)
        {

            for (int x = 0; x <= d.Rows.Count - 1; x++)
            {
                d.Rows[x].BeginEdit();
                d.Rows[x][0] = x + 1;
                d.Rows[x].EndEdit();
            }

        }

        protected void btnDetalle_Click(object sender, EventArgs e)
        {
            pcCargarExcel.ShowOnPageLoad = false;
            string scriptOK = "MostrarMensaje();";
            lblMensaje.Text = "Excel cargado.";
            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", scriptOK, true);
        }

        protected void ASPxUploadControl1_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {
            string resultFilePath = "/Archivos Excel SSIS/STOCK_" + e.UploadedFile.FileName;
            e.UploadedFile.SaveAs(MapPath(resultFilePath));
           
        }
    }
}